🌎 rns.kin.earth git 🌍
Commit bf633bba5db7ce2ab0c4fb9bb1963e33ee1e2270
Parents : 8337a59
Author : Mark Qvist <mark@unsigned.io>
Date : 2024-11-21T13:03:03+01:00
Internal interface config handling for RNodeInterface
Changes
2 files changed, 39 insertions(+), 67 deletions(-)
Diff
diff --git a/RNS/Interfaces/RNodeInterface.py b/RNS/Interfaces/RNodeInterface.py
index 77811633..40aca4f7 100644
--- a/RNS/Interfaces/RNodeInterface.py
+++ b/RNS/Interfaces/RNodeInterface.py
@@ -95,6 +95,7 @@ class KISS():
class RNodeInterface(Interface):
MAX_CHUNK = 32768
+ DEFAULT_IFAC_SIZE = 8
FREQ_MIN = 137000000
FREQ_MAX = 3000000000
@@ -117,7 +118,7 @@ class RNodeInterface(Interface):
BATTERY_STATE_CHARGING = 0x02
BATTERY_STATE_CHARGED = 0x03
- def __init__(self, owner, name, port, frequency = None, bandwidth = None, txpower = None, sf = None, cr = None, flow_control = False, id_interval = None, id_callsign = None, st_alock = None, lt_alock = None, ble_addr = None, ble_name = None, force_ble=False):
+ def __init__(self, owner, configuration):
if RNS.vendor.platformutils.is_android():
raise SystemError("Invalid interface type. The Android-specific RNode interface must be used on Android")
@@ -131,6 +132,41 @@ class RNodeInterface(Interface):
super().__init__()
+ c = configuration
+ name = c["name"]
+ frequency = int(c["frequency"]) if "frequency" in c else None
+ bandwidth = int(c["bandwidth"]) if "bandwidth" in c else None
+ txpower = int(c["txpower"]) if "txpower" in c else None
+ sf = int(c["spreadingfactor"]) if "spreadingfactor" in c else None
+ cr = int(c["codingrate"]) if "codingrate" in c else None
+ flow_control = c.as_bool("flow_control") if "flow_control" in c else False
+ id_interval = int(c["id_interval"]) if "id_interval" in c else None
+ id_callsign = c["id_callsign"] if "id_callsign" in c else None
+ st_alock = float(c["airtime_limit_short"]) if "airtime_limit_short" in c else None
+ lt_alock = float(c["airtime_limit_long"]) if "airtime_limit_long" in c else None
+
+ force_ble = False
+ ble_name = None
+ ble_addr = None
+
+ port = c["port"] if "port" in c else None
+
+ if port == None:
+ raise ValueError("No port specified for RNode interface")
+
+ if port != None:
+ ble_uri_scheme = "ble://"
+ if port.lower().startswith(ble_uri_scheme):
+ force_ble = True
+ ble_string = port[len(ble_uri_scheme):]
+ port = None
+ if len(ble_string) == 0:
+ pass
+ elif len(ble_string.split(":")) == 6 and len(ble_string) == 17:
+ ble_addr = ble_string
+ else:
+ ble_name = ble_string
+
self.HW_MTU = 508
self.pyserial = serial
diff --git a/RNS/Reticulum.py b/RNS/Reticulum.py
index fea7e63f..1b0bab23 100755
--- a/RNS/Reticulum.py
+++ b/RNS/Reticulum.py
@@ -631,72 +631,8 @@ class Reticulum:
interface_post_init(interface)
if c["type"] == "RNodeInterface":
- frequency = int(c["frequency"]) if "frequency" in c else None
- bandwidth = int(c["bandwidth"]) if "bandwidth" in c else None
- txpower = int(c["txpower"]) if "txpower" in c else None
- spreadingfactor = int(c["spreadingfactor"]) if "spreadingfactor" in c else None
- codingrate = int(c["codingrate"]) if "codingrate" in c else None
- flow_control = c.as_bool("flow_control") if "flow_control" in c else False
- id_interval = int(c["id_interval"]) if "id_interval" in c else None
- id_callsign = c["id_callsign"] if "id_callsign" in c else None
- st_alock = float(c["airtime_limit_short"]) if "airtime_limit_short" in c else None
- lt_alock = float(c["airtime_limit_long"]) if "airtime_limit_long" in c else None
-
- force_ble = False
- ble_name = None
- ble_addr = None
-
- port = c["port"] if "port" in c else None
-
- if port == None:
- raise ValueError("No port specified for RNode interface")
-
- if port != None:
- ble_uri_scheme = "ble://"
- if port.lower().startswith(ble_uri_scheme):
- force_ble = True
- ble_string = port[len(ble_uri_scheme):]
- port = None
- if len(ble_string) == 0:
- pass
- elif len(ble_string.split(":")) == 6 and len(ble_string) == 17:
- ble_addr = ble_string
- else:
- ble_name = ble_string
-
- interface = RNodeInterface.RNodeInterface(
- RNS.Transport,
- name,
- port,
- frequency = frequency,
- bandwidth = bandwidth,
- txpower = txpower,
- sf = spreadingfactor,
- cr = codingrate,
- flow_control = flow_control,
- id_interval = id_interval,
- id_callsign = id_callsign,
- st_alock = st_alock,
- lt_alock = lt_alock,
- ble_addr = ble_addr,
- ble_name = ble_name,
- force_ble = force_ble,
- )
-
- if "outgoing" in c and c.as_bool("outgoing") == False:
- interface.OUT = False
- else:
- interface.OUT = True
-
- interface.mode = interface_mode
-
- interface.announce_cap = announce_cap
- if configured_bitrate:
- interface.bitrate = configured_bitrate
- if ifac_size != None:
- interface.ifac_size = ifac_size
- else:
- interface.ifac_size = 8
+ interface = RNodeInterface.RNodeInterface(RNS.Transport, interface_config)
+ interface_post_init(interface)
if c["type"] == "RNodeMultiInterface":
count = 0
Served by rngit 1.5.2 - Generated in 0.07s